package com.quanyan.stadium.service;

import com.quanyan.api.APIResponse;
import com.quanyan.stadium.api.req.ReqPKGameRankList;
import com.quanyan.stadium.api.req.ReqUserRadarChart;
import com.quanyan.stadium.api.resp.RespUserRadarChart;
import com.quanyan.stadium.api.resp.RespUserScoreRankAndRankList;
import com.quanyan.stadium.entity.vo.GradeInfo;
import com.quanyan.stadium.entity.vo.UserGameCategory;
import com.quanyan.stadium.entity.vo.UserGrade;
import com.quanyan.stadium.entity.vo.UserGradeIntegral;

import java.lang.reflect.InvocationTargetException;

/**
 * @author dongshenglin
 * @date 2016/7/11  18:20
 */
public interface StadiumIndexService {

    /**
     *
     * 获取用户基本信息、评级积分、运动雷达图 （已作废）
     */
    APIResponse<UserGameCategory> getUserGradeIntegral(Integer uid,Integer gameCategoryId);

    /**
     * 获取个人排名、个人总积分、俱乐部排名
     */
    UserGrade getUserGrade(Integer uid,Integer gameCategoryId,Integer areaId);

    /**
     * 获取雷达图数据
     */
    RespUserRadarChart getUserRadarChart(ReqUserRadarChart reqUserRadarChart);

    /**
     *
     * 获取用户积分排行榜 (缓存版本,未知问题待处理)
     */
    RespUserScoreRankAndRankList queryPKGameRankList(ReqPKGameRankList reqPKGameRankList, Integer uid) throws InvocationTargetException, IllegalAccessException ;

    /**
     *
     * 获取用户积分排行榜 (非缓存,数据量在100W里完全没问题)
     *
     * 下一版本处理为缓存模式,一天更新一次,做多存放过
     */
    RespUserScoreRankAndRankList queryPKGameRankListNotCache(ReqPKGameRankList reqPKGameRankList, Integer uid);



    /**
     * 获取用户的排名
     *
     */
    int getUserScoreRank(Integer uid, Integer categoryId, Integer cityId);

    /**
     * 判断评级索引的显示位置（1级时在最左边，用0表示；满级时在最右边，用2表示）
     */
    int getCurrentIndex(Integer categoryId,Double currentGrade);

    /**
     * 获取上一评级、当前评级、下一评级信息（已废弃）
     */
    GradeInfo getGradeInfo(UserGradeIntegral userGradeIntegral,Integer gameCategoryId);
}
